/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pa165.mushroom.website.dao;


import cz.muni.fi.pa165.mushroom.website.entities.Forest;
import cz.muni.fi.pa165.mushroom.website.entities.Gatherer;
import cz.muni.fi.pa165.mushroom.website.entities.Visit;

import java.util.List;

/**
 * DAO interface for Visit entity
 * 
 * @author Pavel Démuth
 */
public interface VisitDao {
    /**
     * Adding Visit object into database.
     * 
     * @param visit Object Visit to be stored in database
     */
    public void createVisit(Visit visit);
    
    /**
     * Updating Visit object in database.
     * 
     * @param visit Object Visit to be updated in database
     */
    public void updateVisit(Visit visit);
    
    /**
     * Deleting Visit object from database.
     * 
     * @param visit Object Visit to be deleted. 
     */
    public void deleteVisit(Visit visit);
    
    /**
     * Finding specific Visit in database.
     * 
     * @param id id of Visit to be found
     * @return visit if found else null
     */
    public Visit findVisit(Long id);
    
    /**
     * List all visits in database.
     * 
     * @return List of visits from database
     */
    public List<Visit> listVisits();
    
    /**
     * List visits of specific forest.
     * 
     * @param forestId- id of forest
     * @return List of visits in specific forest from database
     */
    public List<Visit> listVisitsByForest(Forest forest);
    
    /**
     * List visits of specific gatherer.
     * 
     * @param gatherId id of Gatherer
     * @return List of visits by specific Gatherer from database
     */
    public List<Visit> listVisitsByGatherer(Gatherer gatherer);
    
    
    
    
}
